<?php
/**
 * Created by PhpStorm.
 * User: edmmss
 * Date: 2019/1/16
 * Time: 11:13
 */

namespace app\modules\templateMethod\controller;

use app\modules\templateMethod\BeachJourney;
use app\modules\templateMethod\CityJourney;
use yii\web\Controller;

class DefaultController extends Controller
{
    /**
     * 模板方法模式示例
     * 模板方法模式是一种行为型的设计模式
     * 可能你已经见过这种模式很多次了。它是一种让抽象模板的子类「完成」一系列算法的行为策略。
     * 众所周知的「好莱坞原则」：「不要打电话给我们，我们会打电话给你」。这个类不是由子类调用的，而是以相反的方式。怎么做？当然很抽象啦！
     * 换而言之，它是一种非常适合框架库的算法骨架。用户只需要实现子类的一种方法，其父类便可去搞定这项工作了。
     * 这是一种分离具体类的简单办法，且可以减少复制粘贴，这也是它常见的原因。
     *
     * @date   2019/1/16
     * @author edmmss
     * @return bool
     */
    public function actionIndex()
    {
        $beachJourney = new BeachJourney();
        $beachJourney->takeATrip();
        $thingsToDo = $beachJourney->getThingsToDo();

        var_dump($thingsToDo);

        $cityJourney = new CityJourney();
        $cityJourney->takeATrip();
        $thingsToDo = $cityJourney->getThingsToDo();

        var_dump($thingsToDo);

        return true;
    }
}